package Modelo;

import java.util.Collection;

import Modelo.Numeros;
import Modelo.Personaje;

public class Tierra implements Bloque {
	private boolean esFirme;
	private Mapa mapa;
	private Numeros vida;
	
	public Tierra(Mapa mapa){
		esFirme = true;
		this.mapa=mapa;
		vida= new Entero(Constantes.resistenciaTierra);
	}
	
	public String toString(){
		return new String("T");
	}
	
	/**
	 * Cuando quiera alojarlo, no va a poder y le envia un 
	 * mensaje a el personaje para que cambie de sentido
	 * @param Personaje
	 * */
	public void alojar(Personaje unPersonaje) {
		unPersonaje.invertirSentido();
	}

	/**
	 * No va a desalojarlo, porque no puede. y no hace nada
	 * @param Personaje
	 * */
	public void desalojar(Personaje unPersonaje) {
		// No hacer nada, porque, un bloque de tierra no sabe alojar
	}

	/**
	 * Indica si es firme como para pisarla, osea si es pisable.
	 * @return boolean 
	 * */
	public boolean esFirme() {
		return this.esFirme;

	}

	/**
	 * @param Transeunte 
	 * @return Boolean va a devolver falso, xq un bloque de tierra 
	 * 			no puede contener un transeuntes
	 * */
	public boolean estaAlojado(Personaje unPersonaje) {
		return false;
	}

	public void destruir(){
		mapa.ModificarBloquePor(this,new Vacio(mapa));	
	}
	
	public Numeros velocidadFinal(Numeros velocidad){
		return new Real(Constantes.velocidad);
	}

	public Collection<Personaje> getAlojados() {
		return null;
	}

	public void atacar(Numeros potencia) {
		System.out.println("tengo "+vida.toEnt());
		vida=vida.restar(potencia);
		System.out.println("ahora tengo "+vida.toEnt());
		if (vida.toEnt() <= 0)
			this.destruir();		
	}
}
